// 导入数据库操作模块

const db = require('../db/index')

// 导入处理密码的模块
const bcrypt = require('bcryptjs')



// 获取用户基本信息的处理函数 
exports.getUserInfo = (req, res) => {
    console.log(req.user);
    //定义查询用户信息的 SQL 语句
    const sql = 'select user_id, student_id, nickname, user_name, id_card, head_img, professional, sex, signature, address, phone, qq ,type from user where user_id=?'
    // 调用 db.query 执行 SQL 语句
    db.query(sql, req.user.user_id, (err, results) => {
        // 执行 SQL 语句失败
        if(err) return res.cc(err)
        // 执行 SQL 语句成功，但是查询的结果可能为空
        if(results.length !== 1) return res.cc('获取用户信息失败！')


        // 用户信息获取成功
        res.send({
            status:0,
            message: '获取用户信息成功！',
            data: results[0],
        })
    }) 
  }



// 更新用户基本信息的处理函数
exports.undataUserInfo = (req, res) => {
    // 定义待执行的 SQL 语句
    const sql = 'update user set ? where user_id=?'
    // console.log(req);
    // 调用 db.query() 执行 SQL 语句并传递参数
    db.query(sql,[req.body, req.user.user_id], (err,results) => {
        // 执行SQL 语句失败
        if(err) return res.cc(err)
        // 执行 SQL 语句成功 但是影响行数不等于1
        if(results.affectedRows !== 1) return res.cc('更新用户的基本信息失败！')
        // 成功
        res.cc('更新用户信息成功！',0) 
    })
}



// 重置密码的处理函数
exports.updatePassword = (req, res) => {
    // 定义根据 user_id 查询用户数据的 SQL 语句
    const sql = `select * from user where user_id=?`

    // 执行 SQL 语句查询用户是否存在
    db.query(sql, req.user.user_id, (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)

        // 检查指定 user_id 的用户是否存在
        if (results.length !== 1) return res.cc('用户不存在！')

        // 判断密码是否正确
        const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)
        if (!compareResult) return res.cc('原密码错误！')

        // 定义更新用户密码的 SQL 语句
        const sql = `update user set password=? where user_id=?`

        // 对新密码进行 bcrypt 加密处理
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)

        // 执行 SQL 语句，根据 user_id 更新用户的密码
        db.query(sql, [newPwd, req.user.user_id], (err, results) => {
            // SQL 语句执行失败
            if (err) return res.cc(err)

            // SQL 语句执行成功，但是影响行数不等于 1
            if (results.affectedRows !== 1) return res.cc('更新密码失败！')

            // 更新密码成功
            res.cc('更新密码成功！', 0)
        })

   })

}
  


//通过地理位置获取推荐人信息
exports.adressFindFind = (req, res) => {
    //定义查询用户信息的 SQL 语句
    const sql = 'select * from user'
    // 调用 db.query 执行 SQL 语句
    db.query(sql, (err, results) => {
        // 执行 SQL 语句失败
        if(err) return res.cc(err)
        let arr = results.filter(item => {
            return item.user_id != req.user.user_id && (item.address.indexOf(req.body.address) != -1)
        })
        let arr2 = arr.slice((req.body.pageNum - 1) * req.body.pageSize, req.body.pageNum * req.body.pageSize)
        // 用户信息获取成功
        res.send({
            status:0,
            message: '获取用户信息成功！',
            data: arr2,
        })
    }) 
  }


  
//获取用户列表
exports.userFindFind = (req, res) => {
    //定义查询用户信息的 SQL 语句
    const sql = 'select * from user'
    // 调用 db.query 执行 SQL 语句
    db.query(sql, (err, results) => {
        // 执行 SQL 语句失败
        if(err) return res.cc(err)
        let arr2 = results.slice((req.body.pageNum - 1) * req.body.pageSize, req.body.pageNum * req.body.pageSize)
        // 用户信息获取成功
        res.send({
            status:0,
            message: '获取用户信息成功！',
            data: arr2,
        })
    }) 
  }


  // 删除用户列表    
exports.deleteUserUser = (req, res) => {
    
    const sql = `delete from user where user_id=?`
  
    db.query(sql, req.body.user_id, (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
      
        // SQL 语句执行成功，但是影响行数不等于 1
        if (results.affectedRows !== 1) return res.cc(' 删除用户失败！')
      
        //  删除用户成功
        res.cc(' 删除用户成功！', 0)
      })
  
  }
